package com.leo.study.billingstrategy;

/**
 * @author liusl
 * @date 2019/3/13-11:03
 */
public interface IBillingStrategy {

    /**
     * 使用美分的价格来避免浮点舍入错误
     * @param rawPrice rawPrice
     * @return
     */
    int getActPrice(int rawPrice);

    /**
     * 正常结算策略（价格不变）
     * @return
     */
    static IBillingStrategy normalStrategy() {
        return rawPrice -> rawPrice;
    }

    /**
     * 欢乐时光策略（50％折扣）
     * @return
     */
    static IBillingStrategy happyHourStrategy() {
        return rawPrice -> rawPrice / 2;
    }
}
